/**
 * apply 和call之间的区别就只有， apply是单个的参数， 那么利用rest表达式展开不就可以了。
 * call就是直接将数据放进去， 不用展开的， 其实写起来更加的简单。
 */

Function.prototype._apply = function (context) {
    context = context || window
    console.log(context)
    const args =[...arguments].slice(1)

    const symbol = Symbol('fn')
    context[symbol] = this;

    context[symbol](args)
    delete context[symbol]
}


const sum =()=>{}
const sumObj={
    sub:(num)=>{
        console.log('sub',num.toString())
    }
}

sumObj.sub._apply(sum,10,20,30)
